package Iterator_pattern.ex1;

import lombok.Getter;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author 申书航
 * @version 1.0
 * 珍藏宝箱类，包含一系列物品并提供迭代器功能
 */
public class TreasureChest {

    @Getter
    private final List<Item> items;

    /**
     * 构造函数，初始化珍藏宝箱中的可获得物品
     */
    public TreasureChest() {
        items = new ArrayList<>(Arrays.asList(
                new Item(ItemType.POTION, "治疗药水"),
                new Item(ItemType.RING, "枯木戒指"),
                new Item(ItemType.WEAPON, "方天画戟"),
                new Item(ItemType.WEAPON, "雌雄双剑"),
                new Item(ItemType.POTION, "强化药水"),
                new Item(ItemType.POTION, "祝福药水"),
                new Item(ItemType.WEAPON, "掩日"),
                new Item(ItemType.RING, "青铜戒指"),
                new Item(ItemType.WEAPON, "渊虹"),
                new Item(ItemType.POTION, "隐身药水")
        ));
    }

    /**
     * 创建一个物品迭代器，根据指定的物品类型返回可用物品的迭代器
     * @param type 要迭代的物品类型
     * @return 物品迭代器
     */
    public ItemIterator iterator(ItemType type) {
        return new TreasureChestItemIterator(this, type);
    }
}
